Subqueries এবং Complex Queries হলো ArangoDB-এর শক্তিশালী কোয়েরি ফিচার, যা জটিল ডেটা বিশ্লেষণ এবং প্রসেসিংকে সহজ করে। Subquery একটি কোয়েরির মধ্যে আরেকটি কোয়েরি হিসেবে কাজ করে এবং Complex Query বিভিন্ন ডেটাসেট এবং শর্তের ভিত্তিতে উন্নত বিশ্লেষণ করতে সাহায্য করে।
Subqueries
Subquery হল একটি কোয়েরি যা অন্য একটি কোয়েরির মধ্যে নেস্ট করা থাকে। এটি মূলত কোয়েরির একটি অংশ হিসেবে কাজ করে এবং একটি নির্দিষ্ট ফলাফল প্রদান করে, যা পরে প্রধান কোয়েরিতে ব্যবহার করা হয়।
উদাহরণ
১. Subquery দিয়ে Nested Data রিটার্ন করা:
FOR user IN Users
LET posts = (
FOR post IN Posts
FILTER post.author == user._key
RETURN post
)
RETURN { user: user, posts: posts }
এখানে:
- প্রথম কোয়েরি
Usersথেকে ব্যবহারকারীদের তথ্য আনছে। - Subquery
Postsথেকে প্রতিটি ব্যবহারকারীর পোস্ট সংগ্রহ করছে। - প্রধান কোয়েরি ব্যবহারকারী এবং তাদের পোস্টের একটি সমন্বিত ফলাফল রিটার্ন করছে।
২. Subquery ব্যবহার করে Grouped Data:
FOR category IN Categories
LET products = (
FOR product IN Products
FILTER product.category == category._key
RETURN product.name
)
RETURN { category: category.name, products: products }
এটি প্রতিটি ক্যাটাগরির সাথে সংশ্লিষ্ট পণ্যের নামগুলো রিটার্ন করে।
Complex Queries
Complex Query বিভিন্ন শর্ত, Subqueries, Joins এবং Aggregations ব্যবহার করে আরও জটিল ডেটা বিশ্লেষণের জন্য ব্যবহৃত হয়। এটি একাধিক ডেটাসেট এবং Nested Data নিয়ে কাজ করে।
উদাহরণ
১. Multiple Filters এবং Aggregations:
FOR order IN Orders
FILTER order.status == "delivered" AND order.amount > 100
COLLECT customer = order.customer INTO ordersGrouped
RETURN { customer: customer, totalOrders: LENGTH(ordersGrouped) }
এখানে:
- Filters:
deliveredস্ট্যাটাস এবংamount > 100এর জন্য ফিল্টার। - Aggregation: প্রতি গ্রাহকের মোট অর্ডারের সংখ্যা গণনা।
২. Complex Query with Join এবং Subquery:
FOR user IN Users
LET totalSpent = SUM(
FOR order IN Orders
FILTER order.customer == user._key
RETURN order.amount
)
RETURN { user: user.name, totalSpent: totalSpent }
এখানে:
- Subquery ব্যবহার করে প্রতিটি ব্যবহারকারীর মোট ক্রয়ের পরিমাণ গণনা।
- প্রধান কোয়েরি এটি ব্যবহারকারীর নামসহ রিটার্ন করছে।
৩. Nested এবং Linked Data Process:
FOR user IN Users
LET friends = (
FOR friend IN Friends
FILTER friend.user == user._key
RETURN friend
)
LET posts = (
FOR post IN Posts
FILTER post.author == user._key
RETURN post
)
RETURN { user: user.name, friends: friends, posts: posts }
এটি প্রতিটি ব্যবহারকারীর নাম, তার বন্ধুদের তালিকা এবং তার পোস্টগুলো রিটার্ন করে।
Subqueries এবং Complex Queries এর সুবিধা
ডেটা বিশ্লেষণের গভীরতা
- Nested এবং সম্পর্কিত ডেটার উন্নত বিশ্লেষণ করা যায়।
অপ্টিমাইজড পারফরম্যান্স
- Subqueries-এর সাহায্যে প্রয়োজনীয় ডেটা কমিয়ে কোয়েরি অপ্টিমাইজ করা যায়।
গ্রাফ ডেটার সমর্থন
- Complex Queries গ্রাফ ডেটার জন্য বিশেষভাবে কার্যকর।
পুনঃব্যবহারযোগ্য কোড
- Subqueries কোয়েরি কাঠামোকে Modular এবং পুনঃব্যবহারযোগ্য করে তোলে।
সারাংশ
Subqueries এবং Complex Queries ArangoDB-এর একটি অত্যন্ত শক্তিশালী ফিচার, যা জটিল এবং সম্পর্কিত ডেটা বিশ্লেষণ সহজ করে। Nested কোয়েরি, Aggregations, এবং Joins ব্যবহার করে বড় এবং জটিল ডেটাবেস থেকে কার্যকর ফলাফল পাওয়া যায়। এটি ডেটা মডেলিং এবং ডেটা ট্রান্সফর্মেশনের জন্য একটি অপরিহার্য হাতিয়ার।